/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.ucase.payment.service;

import com.icinfo.cloud.provider.punish.ucase.payment.dto.*;
import com.icinfo.cloud.provider.punish.ucase.payment.model.CasePaymentMainRecord;
import com.icinfo.cloud.provider.punish.ucase.payment.vo.CasePaymentBillListVo;
import com.icinfo.cloud.provider.punish.ucase.payment.vo.CasePaymentBillTradeWayVo;
import com.icinfo.cloud.provider.punish.ucase.payment.vo.CasePaymentMainRecordVo;
import com.icinfo.framework.core.service.BaseService;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 描述:  case_payment_main_record 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2022年03月01日
 */
public interface ICasePaymentMainRecordService extends BaseService {

    /**
     * 描述：查询缴款单信息
     *
     * @param queryDto {@link CasePaymentMainRecordQueryDto}
     * @return {@link List <CasePaymentMainRecordVo>} 缴款单信息
     * @author xiangyuyu
     * @date 2022-03-01 16:51
     */
    List<CasePaymentMainRecordVo> getPaymentChannelConfigInfo(CasePaymentMainRecordQueryDto queryDto);


    /**
     * 描述：保存缴款单信息
     *
     * @param caseId              案件id
     * @param documentCatalogCode 文书目录编码
     * @param partyId             当事人id
     * @param caseType            案件类型
     * @return String 缴款单号
     * @author xiangyuyu
     * @date 2022-03-01 16:51
     */
    String saveCasePaymentMainRecord(String caseId,String documentCatalogCode,String partyId, String caseType);

    /**
     * 查询缴款单分页列表
     * @param queryDto
     * @return
     */
    List<CasePaymentBillListVo> queryPaymentBillPageList(CasePaymentBillQueryDto queryDto);

    /**
     * 导出缴款单列表
     * @param queryDto
     * @param response
     */
    void exportPaymentBillList(CasePaymentBillQueryDto queryDto, HttpServletResponse response) throws Exception;

    /**
     * 查询支付方式和支付机构列表
     * @return
     */
    CasePaymentBillTradeWayVo queryPaymentBillTradeWayList();

    /**
     * 专题查询-缴款单查询-查询当地财政部门是否开出发票
     * @param noticeNo
     * @return
     */
    List<String> getElectricInvoiceByNoticeNo(String noticeNo);

    /**
     * 描述：更新案件缴费
     * @param mainRecord
     * @return
     * @author wangfawei
     * @date  2022-12-6
     */
    int updateCasePaymentMainRecord(CasePaymentMainRecord mainRecord);
    /**
     * 描述：查询案件缴费信息
     * @param caseId 案件id
     * @return
     * @author wangfawei
     * @date  2022-12-6
     */
    CasePaymentMainRecord getCasePaymentMainRecord(String caseId,String noticeNo);

    /**
     * 描述： 修改缴款单状态
     *
     * @author: zhengqiang
     * @date: 2023/1/4
     * @param: updateDto
     * @return
     **/
    void updateCasePaymentMainRecordStatus(CasePaymentMainRecordStatusUpdateDto updateDto);

    /**
     * 描述： 根据缴款单号更新缴款状态
     *
     * @author: zhengqiang
     * @date: 2023/1/16
     * @param: noticeNo
     * @param: status
     * @return {@link int}
     **/
    int updateCasePaymentMainRecordStatusByNoticeNo(String noticeNo, String status);
    /**
     * 根据caseid查询缴款单号
     * @author liyafeng
     * @date 2023/6/30
      * @param caseId
     * @return {@link CasePaymentMainRecord}
     */
    CasePaymentMainRecord getCasePaymentMainRecord(String caseId);
}